﻿using System;
using System.Diagnostics;

namespace YAFTS.Utils
{
	public static class Partion
	{	   
	 	[DebuggerStepThrough]
		public static Func<TResult> Part<T1, TResult>(this Func<T1, TResult> function, T1 arg1)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return () => function(arg1);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T2, TResult> Part<T1, T2, TResult>(this Func<T1, T2, TResult> function, T1 arg1)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t2) => function(arg1, t2);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T2, T3, TResult> Part<T1, T2, T3, TResult>(this Func<T1, T2, T3, TResult> function, T1 arg1)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t2, t3) => function(arg1, t2, t3);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T2, T3, T4, TResult> Part<T1, T2, T3, T4, TResult>(this Func<T1, T2, T3, T4, TResult> function, T1 arg1)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t2, t3, t4) => function(arg1, t2, t3, t4);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T2, T3, T4, T5, TResult> Part<T1, T2, T3, T4, T5, TResult>(this Func<T1, T2, T3, T4, T5, TResult> function, T1 arg1)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t2, t3, t4, t5) => function(arg1, t2, t3, t4, t5);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T2, T3, T4, T5, T6, TResult> Part<T1, T2, T3, T4, T5, T6, TResult>(this Func<T1, T2, T3, T4, T5, T6, TResult> function, T1 arg1)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t2, t3, t4, t5, t6) => function(arg1, t2, t3, t4, t5, t6);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T2, T3, T4, T5, T6, T7, TResult> Part<T1, T2, T3, T4, T5, T6, T7, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, TResult> function, T1 arg1)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t2, t3, t4, t5, t6, t7) => function(arg1, t2, t3, t4, t5, t6, t7);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T2, T3, T4, T5, T6, T7, T8, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> function, T1 arg1)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t2, t3, t4, t5, t6, t7, t8) => function(arg1, t2, t3, t4, t5, t6, t7, t8);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T2, T3, T4, T5, T6, T7, T8, T9, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> function, T1 arg1)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t2, t3, t4, t5, t6, t7, t8, t9) => function(arg1, t2, t3, t4, t5, t6, t7, t8, t9);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> function, T1 arg1)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t2, t3, t4, t5, t6, t7, t8, t9, t10) => function(arg1, t2, t3, t4, t5, t6, t7, t8, t9, t10);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> function, T1 arg1)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) => function(arg1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> function, T1 arg1)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) => function(arg1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> function, T1 arg1)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) => function(arg1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> function, T1 arg1)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) => function(arg1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> function, T1 arg1)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) => function(arg1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> function, T1 arg1)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) => function(arg1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16);
		}
						
	 	[DebuggerStepThrough]
		public static Func<TResult> Part<T1, T2, TResult>(this Func<T1, T2, TResult> function, T1 arg1, T2 arg2)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return () => function(arg1, arg2);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T3, TResult> Part<T1, T2, T3, TResult>(this Func<T1, T2, T3, TResult> function, T1 arg1, T2 arg2)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t3) => function(arg1, arg2, t3);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T3, T4, TResult> Part<T1, T2, T3, T4, TResult>(this Func<T1, T2, T3, T4, TResult> function, T1 arg1, T2 arg2)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t3, t4) => function(arg1, arg2, t3, t4);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T3, T4, T5, TResult> Part<T1, T2, T3, T4, T5, TResult>(this Func<T1, T2, T3, T4, T5, TResult> function, T1 arg1, T2 arg2)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t3, t4, t5) => function(arg1, arg2, t3, t4, t5);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T3, T4, T5, T6, TResult> Part<T1, T2, T3, T4, T5, T6, TResult>(this Func<T1, T2, T3, T4, T5, T6, TResult> function, T1 arg1, T2 arg2)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t3, t4, t5, t6) => function(arg1, arg2, t3, t4, t5, t6);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T3, T4, T5, T6, T7, TResult> Part<T1, T2, T3, T4, T5, T6, T7, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, TResult> function, T1 arg1, T2 arg2)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t3, t4, t5, t6, t7) => function(arg1, arg2, t3, t4, t5, t6, t7);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T3, T4, T5, T6, T7, T8, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> function, T1 arg1, T2 arg2)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t3, t4, t5, t6, t7, t8) => function(arg1, arg2, t3, t4, t5, t6, t7, t8);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T3, T4, T5, T6, T7, T8, T9, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> function, T1 arg1, T2 arg2)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t3, t4, t5, t6, t7, t8, t9) => function(arg1, arg2, t3, t4, t5, t6, t7, t8, t9);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T3, T4, T5, T6, T7, T8, T9, T10, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> function, T1 arg1, T2 arg2)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t3, t4, t5, t6, t7, t8, t9, t10) => function(arg1, arg2, t3, t4, t5, t6, t7, t8, t9, t10);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> function, T1 arg1, T2 arg2)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t3, t4, t5, t6, t7, t8, t9, t10, t11) => function(arg1, arg2, t3, t4, t5, t6, t7, t8, t9, t10, t11);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> function, T1 arg1, T2 arg2)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) => function(arg1, arg2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> function, T1 arg1, T2 arg2)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) => function(arg1, arg2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> function, T1 arg1, T2 arg2)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) => function(arg1, arg2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> function, T1 arg1, T2 arg2)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) => function(arg1, arg2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> function, T1 arg1, T2 arg2)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) => function(arg1, arg2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16);
		}
						
	 	[DebuggerStepThrough]
		public static Func<TResult> Part<T1, T2, T3, TResult>(this Func<T1, T2, T3, TResult> function, T1 arg1, T2 arg2, T3 arg3)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return () => function(arg1, arg2, arg3);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T4, TResult> Part<T1, T2, T3, T4, TResult>(this Func<T1, T2, T3, T4, TResult> function, T1 arg1, T2 arg2, T3 arg3)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t4) => function(arg1, arg2, arg3, t4);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T4, T5, TResult> Part<T1, T2, T3, T4, T5, TResult>(this Func<T1, T2, T3, T4, T5, TResult> function, T1 arg1, T2 arg2, T3 arg3)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t4, t5) => function(arg1, arg2, arg3, t4, t5);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T4, T5, T6, TResult> Part<T1, T2, T3, T4, T5, T6, TResult>(this Func<T1, T2, T3, T4, T5, T6, TResult> function, T1 arg1, T2 arg2, T3 arg3)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t4, t5, t6) => function(arg1, arg2, arg3, t4, t5, t6);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T4, T5, T6, T7, TResult> Part<T1, T2, T3, T4, T5, T6, T7, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, TResult> function, T1 arg1, T2 arg2, T3 arg3)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t4, t5, t6, t7) => function(arg1, arg2, arg3, t4, t5, t6, t7);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T4, T5, T6, T7, T8, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> function, T1 arg1, T2 arg2, T3 arg3)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t4, t5, t6, t7, t8) => function(arg1, arg2, arg3, t4, t5, t6, t7, t8);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T4, T5, T6, T7, T8, T9, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> function, T1 arg1, T2 arg2, T3 arg3)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t4, t5, t6, t7, t8, t9) => function(arg1, arg2, arg3, t4, t5, t6, t7, t8, t9);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T4, T5, T6, T7, T8, T9, T10, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> function, T1 arg1, T2 arg2, T3 arg3)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t4, t5, t6, t7, t8, t9, t10) => function(arg1, arg2, arg3, t4, t5, t6, t7, t8, t9, t10);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T4, T5, T6, T7, T8, T9, T10, T11, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> function, T1 arg1, T2 arg2, T3 arg3)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t4, t5, t6, t7, t8, t9, t10, t11) => function(arg1, arg2, arg3, t4, t5, t6, t7, t8, t9, t10, t11);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> function, T1 arg1, T2 arg2, T3 arg3)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t4, t5, t6, t7, t8, t9, t10, t11, t12) => function(arg1, arg2, arg3, t4, t5, t6, t7, t8, t9, t10, t11, t12);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> function, T1 arg1, T2 arg2, T3 arg3)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) => function(arg1, arg2, arg3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> function, T1 arg1, T2 arg2, T3 arg3)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) => function(arg1, arg2, arg3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> function, T1 arg1, T2 arg2, T3 arg3)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) => function(arg1, arg2, arg3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> function, T1 arg1, T2 arg2, T3 arg3)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) => function(arg1, arg2, arg3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16);
		}
						
	 	[DebuggerStepThrough]
		public static Func<TResult> Part<T1, T2, T3, T4, TResult>(this Func<T1, T2, T3, T4, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return () => function(arg1, arg2, arg3, arg4);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T5, TResult> Part<T1, T2, T3, T4, T5, TResult>(this Func<T1, T2, T3, T4, T5, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t5) => function(arg1, arg2, arg3, arg4, t5);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T5, T6, TResult> Part<T1, T2, T3, T4, T5, T6, TResult>(this Func<T1, T2, T3, T4, T5, T6, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t5, t6) => function(arg1, arg2, arg3, arg4, t5, t6);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T5, T6, T7, TResult> Part<T1, T2, T3, T4, T5, T6, T7, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t5, t6, t7) => function(arg1, arg2, arg3, arg4, t5, t6, t7);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T5, T6, T7, T8, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t5, t6, t7, t8) => function(arg1, arg2, arg3, arg4, t5, t6, t7, t8);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T5, T6, T7, T8, T9, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t5, t6, t7, t8, t9) => function(arg1, arg2, arg3, arg4, t5, t6, t7, t8, t9);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T5, T6, T7, T8, T9, T10, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t5, t6, t7, t8, t9, t10) => function(arg1, arg2, arg3, arg4, t5, t6, t7, t8, t9, t10);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T5, T6, T7, T8, T9, T10, T11, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t5, t6, t7, t8, t9, t10, t11) => function(arg1, arg2, arg3, arg4, t5, t6, t7, t8, t9, t10, t11);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T5, T6, T7, T8, T9, T10, T11, T12, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t5, t6, t7, t8, t9, t10, t11, t12) => function(arg1, arg2, arg3, arg4, t5, t6, t7, t8, t9, t10, t11, t12);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t5, t6, t7, t8, t9, t10, t11, t12, t13) => function(arg1, arg2, arg3, arg4, t5, t6, t7, t8, t9, t10, t11, t12, t13);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) => function(arg1, arg2, arg3, arg4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) => function(arg1, arg2, arg3, arg4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) => function(arg1, arg2, arg3, arg4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16);
		}
						
	 	[DebuggerStepThrough]
		public static Func<TResult> Part<T1, T2, T3, T4, T5, TResult>(this Func<T1, T2, T3, T4, T5, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return () => function(arg1, arg2, arg3, arg4, arg5);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T6, TResult> Part<T1, T2, T3, T4, T5, T6, TResult>(this Func<T1, T2, T3, T4, T5, T6, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t6) => function(arg1, arg2, arg3, arg4, arg5, t6);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T6, T7, TResult> Part<T1, T2, T3, T4, T5, T6, T7, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t6, t7) => function(arg1, arg2, arg3, arg4, arg5, t6, t7);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T6, T7, T8, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t6, t7, t8) => function(arg1, arg2, arg3, arg4, arg5, t6, t7, t8);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T6, T7, T8, T9, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t6, t7, t8, t9) => function(arg1, arg2, arg3, arg4, arg5, t6, t7, t8, t9);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T6, T7, T8, T9, T10, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t6, t7, t8, t9, t10) => function(arg1, arg2, arg3, arg4, arg5, t6, t7, t8, t9, t10);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T6, T7, T8, T9, T10, T11, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t6, t7, t8, t9, t10, t11) => function(arg1, arg2, arg3, arg4, arg5, t6, t7, t8, t9, t10, t11);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T6, T7, T8, T9, T10, T11, T12, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t6, t7, t8, t9, t10, t11, t12) => function(arg1, arg2, arg3, arg4, arg5, t6, t7, t8, t9, t10, t11, t12);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T6, T7, T8, T9, T10, T11, T12, T13, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t6, t7, t8, t9, t10, t11, t12, t13) => function(arg1, arg2, arg3, arg4, arg5, t6, t7, t8, t9, t10, t11, t12, t13);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t6, t7, t8, t9, t10, t11, t12, t13, t14) => function(arg1, arg2, arg3, arg4, arg5, t6, t7, t8, t9, t10, t11, t12, t13, t14);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) => function(arg1, arg2, arg3, arg4, arg5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) => function(arg1, arg2, arg3, arg4, arg5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16);
		}
						
	 	[DebuggerStepThrough]
		public static Func<TResult> Part<T1, T2, T3, T4, T5, T6, TResult>(this Func<T1, T2, T3, T4, T5, T6, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return () => function(arg1, arg2, arg3, arg4, arg5, arg6);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T7, TResult> Part<T1, T2, T3, T4, T5, T6, T7, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t7) => function(arg1, arg2, arg3, arg4, arg5, arg6, t7);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T7, T8, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t7, t8) => function(arg1, arg2, arg3, arg4, arg5, arg6, t7, t8);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T7, T8, T9, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t7, t8, t9) => function(arg1, arg2, arg3, arg4, arg5, arg6, t7, t8, t9);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T7, T8, T9, T10, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t7, t8, t9, t10) => function(arg1, arg2, arg3, arg4, arg5, arg6, t7, t8, t9, t10);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T7, T8, T9, T10, T11, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t7, t8, t9, t10, t11) => function(arg1, arg2, arg3, arg4, arg5, arg6, t7, t8, t9, t10, t11);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T7, T8, T9, T10, T11, T12, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t7, t8, t9, t10, t11, t12) => function(arg1, arg2, arg3, arg4, arg5, arg6, t7, t8, t9, t10, t11, t12);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T7, T8, T9, T10, T11, T12, T13, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t7, t8, t9, t10, t11, t12, t13) => function(arg1, arg2, arg3, arg4, arg5, arg6, t7, t8, t9, t10, t11, t12, t13);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T7, T8, T9, T10, T11, T12, T13, T14, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t7, t8, t9, t10, t11, t12, t13, t14) => function(arg1, arg2, arg3, arg4, arg5, arg6, t7, t8, t9, t10, t11, t12, t13, t14);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t7, t8, t9, t10, t11, t12, t13, t14, t15) => function(arg1, arg2, arg3, arg4, arg5, arg6, t7, t8, t9, t10, t11, t12, t13, t14, t15);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) => function(arg1, arg2, arg3, arg4, arg5, arg6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16);
		}
						
	 	[DebuggerStepThrough]
		public static Func<TResult> Part<T1, T2, T3, T4, T5, T6, T7, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return () => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T8, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t8) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, t8);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T8, T9, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t8, t9) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, t8, t9);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T8, T9, T10, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t8, t9, t10) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, t8, t9, t10);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T8, T9, T10, T11, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t8, t9, t10, t11) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, t8, t9, t10, t11);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T8, T9, T10, T11, T12, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t8, t9, t10, t11, t12) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, t8, t9, t10, t11, t12);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T8, T9, T10, T11, T12, T13, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t8, t9, t10, t11, t12, t13) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, t8, t9, t10, t11, t12, t13);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T8, T9, T10, T11, T12, T13, T14, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t8, t9, t10, t11, t12, t13, t14) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, t8, t9, t10, t11, t12, t13, t14);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T8, T9, T10, T11, T12, T13, T14, T15, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t8, t9, t10, t11, t12, t13, t14, t15) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, t8, t9, t10, t11, t12, t13, t14, t15);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t8, t9, t10, t11, t12, t13, t14, t15, t16) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, t8, t9, t10, t11, t12, t13, t14, t15, t16);
		}
						
	 	[DebuggerStepThrough]
		public static Func<TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return () => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T9, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t9) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, t9);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T9, T10, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t9, t10) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, t9, t10);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T9, T10, T11, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t9, t10, t11) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, t9, t10, t11);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T9, T10, T11, T12, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t9, t10, t11, t12) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, t9, t10, t11, t12);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T9, T10, T11, T12, T13, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t9, t10, t11, t12, t13) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, t9, t10, t11, t12, t13);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T9, T10, T11, T12, T13, T14, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t9, t10, t11, t12, t13, t14) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, t9, t10, t11, t12, t13, t14);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T9, T10, T11, T12, T13, T14, T15, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t9, t10, t11, t12, t13, t14, t15) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, t9, t10, t11, t12, t13, t14, t15);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T9, T10, T11, T12, T13, T14, T15, T16, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t9, t10, t11, t12, t13, t14, t15, t16) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, t9, t10, t11, t12, t13, t14, t15, t16);
		}
						
	 	[DebuggerStepThrough]
		public static Func<TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return () => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T10, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t10) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, t10);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T10, T11, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t10, t11) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, t10, t11);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T10, T11, T12, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t10, t11, t12) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, t10, t11, t12);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T10, T11, T12, T13, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t10, t11, t12, t13) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, t10, t11, t12, t13);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T10, T11, T12, T13, T14, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t10, t11, t12, t13, t14) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, t10, t11, t12, t13, t14);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T10, T11, T12, T13, T14, T15, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t10, t11, t12, t13, t14, t15) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, t10, t11, t12, t13, t14, t15);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T10, T11, T12, T13, T14, T15, T16, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t10, t11, t12, t13, t14, t15, t16) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, t10, t11, t12, t13, t14, t15, t16);
		}
						
	 	[DebuggerStepThrough]
		public static Func<TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return () => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T11, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t11) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, t11);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T11, T12, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t11, t12) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, t11, t12);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T11, T12, T13, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t11, t12, t13) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, t11, t12, t13);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T11, T12, T13, T14, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t11, t12, t13, t14) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, t11, t12, t13, t14);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T11, T12, T13, T14, T15, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t11, t12, t13, t14, t15) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, t11, t12, t13, t14, t15);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T11, T12, T13, T14, T15, T16, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t11, t12, t13, t14, t15, t16) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, t11, t12, t13, t14, t15, t16);
		}
						
	 	[DebuggerStepThrough]
		public static Func<TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return () => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T12, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t12) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, t12);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T12, T13, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t12, t13) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, t12, t13);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T12, T13, T14, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t12, t13, t14) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, t12, t13, t14);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T12, T13, T14, T15, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t12, t13, t14, t15) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, t12, t13, t14, t15);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T12, T13, T14, T15, T16, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t12, t13, t14, t15, t16) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, t12, t13, t14, t15, t16);
		}
						
	 	[DebuggerStepThrough]
		public static Func<TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return () => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T13, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t13) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, t13);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T13, T14, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t13, t14) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, t13, t14);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T13, T14, T15, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t13, t14, t15) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, t13, t14, t15);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T13, T14, T15, T16, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t13, t14, t15, t16) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, t13, t14, t15, t16);
		}
						
	 	[DebuggerStepThrough]
		public static Func<TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return () => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T14, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t14) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, t14);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T14, T15, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t14, t15) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, t14, t15);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T14, T15, T16, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t14, t15, t16) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, t14, t15, t16);
		}
						
	 	[DebuggerStepThrough]
		public static Func<TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return () => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T15, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t15) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, t15);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T15, T16, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t15, t16) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, t15, t16);
		}
						
	 	[DebuggerStepThrough]
		public static Func<TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14, T15 arg15)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return () => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15);
		}
						
	 	[DebuggerStepThrough]
		public static Func<T16, TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14, T15 arg15)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return (t16) => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, t16);
		}
						
	 	[DebuggerStepThrough]
		public static Func<TResult> Part<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> function, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14, T15 arg15, T16 arg16)
		{
			if (function == null)
	 		{
	 			throw new ArgumentNullException("function");
	 		}
			return () => function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16);
		}
						
	}
}

